//
//  CLHttpTool.h
//  togetherLBS
//
//  Created by louis on 15/7/28.
//  Copyright (c) 2015年 celi. All rights reserved.
//  网络请求的工具类：项目中的网络请求的底层工具类

#import <Foundation/Foundation.h>
#import "Singleton.h"
#import "AFNetworking.h"
#import "CLFormData.h"

// 网络请求的超时时间
#define kTIME_OUT 20.0

@interface CLHttpTool : NSObject
/**
 *  单例类的声明
 */
SingletonH(HttpTool)

/**
 *  发送一个GET请求
 *
 *  @param url     请求路径
 *  @param params  请求参数
 *  @param success 请求成功后的回调（请将请求成功后想做的事情写到这个block中）
 *  @param failure 请求失败后的回调（请将请求失败后想做的事情写到这个block中）
 */
- (void)getWithUrl:(NSString *)url paramaters:(NSDictionary *)params success:(void(^)(id responseObject))success failure:(void(^)(NSError *error))failure;

/**
 *  发送一个GET请求，服务器返回image/jpeg类型的数据流
 *
 *  @param url     请求路径
 *  @param params  请求参数
 *  @param success 请求成功后的回调（请将请求成功后想做的事情写到这个block中）
 *  @param failure 请求失败后的回调（请将请求失败后想做的事情写到这个block中）
 */
- (void)getImageWithUrl:(NSString *)url paramaters:(NSDictionary *)params success:(void(^)(id responseObject))success failure:(void(^)(NSError *error))failure;

/**
 *  发送一个GET请求，获取声音文件audio/basic
 *
 *  @param url     请求路径
 *  @param success 请求成功后的回调（请将请求成功后想做的事情写到这个block中）
 *  @param failure 请求失败后的回调（请将请求失败后想做的事情写到这个block中）
 */
- (void)getVoiceDataWithUrl:(NSString *)url success:(void(^)(id responseObject))success failure:(void(^)(NSError *error))failure;

/**
 *  简单的POST请求
 *
 *  @param url     请求路径
 *  @param params  请求参数(普通的请求参数)
 *  @param success 请求成功后的回调（请将请求成功后想做的事情写到这个block中）
 *  @param failure 请求失败后的回调（请将请求失败后想做的事情写到这个block中）
 */
- (void)postWithUrl:(NSString *)url paramaters:(NSDictionary *)params success:(void(^)(id responseObject))success failure:(void(^)(NSError *error))failure;


/**
 *  上传文件（图片、声音文件等）的POST请求
 *
 *  @param url           请求路径
 *  @param params        请求参数(普通的请求参数)
 *  @param formDataArray 文件参数（文件转成的二进制数据NSData放在这个数组中）
 *  @param success       请求成功后的回调（请将请求成功后想做的事情写到这个block中）
 *  @param failure       请求失败后的回调（请将请求失败后想做的事情写到这个block中）
 */
- (void)postWithUrl:(NSString *)url paramaters:(NSDictionary *)params formDataArray:(NSArray *)formDataArray success:(void(^)(id responseObject))success failure:(void(^)(NSError *error))failure;

/**
 *  取消当前的网络请求
 */
- (void)cancelCurrentRequest;
/**
 *  取消所有的网络请求
 */
- (void)cancelAllRequest;
@end


